package com.gilight.base.service;

import com.gilight.base.dto.DataRuleDto;
import com.gilight.base.model.SysDataRule;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 数据规则业务接口
 */
public interface SysDataRuleService {
    /**
     * 列表展现
     * @param dataRuleDto 查询条件
     * @return 分页封装对象
     */
    PageInfo findList(DataRuleDto dataRuleDto);

    /**
     * 添加数据规则
     * @param sysDataRule 规则实体
     */
    void add(SysDataRule sysDataRule);

    /**
     * 编辑数据规则
     * @param sysDataRule 规则实体
     */
    void edit(SysDataRule sysDataRule);

    /**
     * 删除数据规则
     * @param id 规则ID
     */
    void delete(Long id);

    /**
     * 根据菜单ID删除菜单内所有数据规则
     * @param permissionId 菜单ID
     * @return 操作数据条目数
     */
    int delRuleByPermissionId(Long permissionId);

    /**
     * 根据菜单ID获取菜单内所有数据规则
     * @param permissionId 菜单ID
     * @return 数据规则信息集合
     */
    List<SysDataRule> selectByPermissionId(Long permissionId);

    /**
     * 根据用户ID、菜单ID获取已经分配的数据规则
     * @param permissionId 菜单ID
     * @param userId 用户ID
     * @return
     */
    List<SysDataRule> getPermDataRuleListByPermIdAndRoleId(Long permissionId, Long userId);

    /**
     * 根据数据规则ID获取到数据规则信息
     * @param id 数据规则主键ID
     * @return
     */
    SysDataRule selectByPrimaryKey(Long id);
    /**
     * 更新规则状态
     * @param id 规则ID
     * @param status 待更新状态
     */
    void updateStatus(Long id, Integer status);
}
